/**
 * 小红书发布器模块 - 渲染进程示例
 */

const { ipcRenderer } = require('electron');

// 全局变量
let currentCookies = [];
let accounts = [];

// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', function() {
    console.log('🚀 渲染进程已加载');
    
    // 初始化应用
    setTimeout(() => {
        initializeApp();
    }, 1000);
});

// 初始化应用
async function initializeApp() {
    try {
        showStatus('✅ 模块已就绪，可以开始使用所有功能', 'success');
        
        // 加载已有的账号
        await loadAccounts();
        
        console.log('✅ 应用初始化完成');
    } catch (error) {
        console.error('❌ 应用初始化失败:', error);
        showStatus('❌ 初始化失败: ' + error.message, 'error');
    }
}

// 显示状态信息
function showStatus(message, type = 'info') {
    const statusElement = document.getElementById('status');
    if (statusElement) {
        statusElement.textContent = message;
        statusElement.className = `status status-${type}`;
        
        if (type === 'success' || type === 'error') {
            setTimeout(() => {
                statusElement.textContent = '📦 小红书发布器模块已就绪';
                statusElement.className = 'status status-info';
            }, 3000);
        }
    }
}

// ==================== 账号管理功能 ====================

// 打开小红书登录窗口
async function openXiaohongshuLogin() {
    try {
        showStatus('🔐 正在打开小红书登录窗口...', 'info');
        
        const result = await ipcRenderer.invoke('xiaohongshu-open-login');
        if (result.success) {
            showStatus('✅ 登录窗口已打开，请完成登录后点击"获取 Cookies"', 'success');
        } else {
            showStatus('❌ 打开登录窗口失败: ' + result.error, 'error');
        }
    } catch (error) {
        console.error('打开登录窗口失败:', error);
        showStatus('❌ 操作失败: ' + error.message, 'error');
    }
}

// 获取 Cookies
async function getCookies() {
    try {
        showStatus('🍪 正在获取 Cookies...', 'info');
        
        const result = await ipcRenderer.invoke('xiaohongshu-get-cookies');
        if (result.success && result.data) {
            currentCookies = result.data;
            showStatus(`✅ 成功获取 ${result.data.length} 个 Cookies`, 'success');
            console.log('获取到的 Cookies:', result.data);
        } else {
            showStatus('❌ 获取 Cookies 失败: ' + (result.error || '未获取到有效数据'), 'error');
        }
    } catch (error) {
        console.error('获取 Cookies 失败:', error);
        showStatus('❌ 操作失败: ' + error.message, 'error');
    }
}

// 保存账号
async function saveAccount() {
    try {
        const accountId = document.getElementById('accountId').value.trim();
        const accountName = document.getElementById('accountName').value.trim();
        
        if (!accountId) {
            showStatus('❌ 请输入账号ID', 'error');
            return;
        }
        
        if (!accountName) {
            showStatus('❌ 请输入账号名称', 'error');
            return;
        }
        
        if (currentCookies.length === 0) {
            showStatus('❌ 请先获取 Cookies', 'error');
            return;
        }
        
        showStatus('💾 正在保存账号...', 'info');
        
        const accountData = {
            account_id: accountId,
            name: accountName,
            platform: 'xiaohongshu',
            cookies: currentCookies
        };
        
        const result = await ipcRenderer.invoke('xiaohongshu-save-account', accountData);
        if (result.success) {
            showStatus('✅ 账号保存成功！', 'success');
            
            // 清空表单
            document.getElementById('accountId').value = '';
            document.getElementById('accountName').value = '';
            currentCookies = [];
            
            // 刷新账号列表
            await loadAccounts();
        } else {
            showStatus('❌ 账号保存失败: ' + result.error, 'error');
        }
    } catch (error) {
        console.error('保存账号失败:', error);
        showStatus('❌ 操作失败: ' + error.message, 'error');
    }
}

// 加载账号列表
async function loadAccounts() {
    try {
        const result = await ipcRenderer.invoke('xiaohongshu-get-accounts');
        if (result.success) {
            accounts = result.data;
            renderAccountsList(accounts);
            updateAccountSelect(accounts);
            console.log('账号列表:', accounts);
        } else {
            console.error('加载账号失败:', result.error);
        }
    } catch (error) {
        console.error('加载账号失败:', error);
    }
}

// 渲染账号列表
function renderAccountsList(accounts) {
    const listElement = document.getElementById('accountsList');
    if (!listElement) return;
    
    if (accounts.length === 0) {
        listElement.innerHTML = '<p>暂无账号，请先添加账号</p>';
        return;
    }
    
    const accountsHTML = accounts.map(account => `
        <div class="account-item">
            <div class="account-info">
                <div class="account-name">${account.name}</div>
                <div class="account-meta">
                    ID: ${account.account_id} | 
                    平台: ${account.platform} | 
                    Cookies: ${account.cookies ? account.cookies.length : 0} 个 |
                    创建时间: ${formatDate(account.created_at)}
                </div>
            </div>
            <button class="btn btn-secondary" onclick="deleteAccount('${account.account_id}')">
                🗑️ 删除
            </button>
        </div>
    `).join('');
    
    listElement.innerHTML = accountsHTML;
}

// 更新账号选择下拉框
function updateAccountSelect(accounts) {
    const selectElement = document.getElementById('selectAccount');
    if (!selectElement) return;
    
    // 清空现有选项
    selectElement.innerHTML = '<option value="">请选择账号</option>';
    
    // 添加账号选项
    accounts.forEach(account => {
        const option = document.createElement('option');
        option.value = account.account_id;
        option.textContent = `${account.name} (${account.platform})`;
        selectElement.appendChild(option);
    });
}

// 删除账号
async function deleteAccount(accountId) {
    if (!confirm('确定要删除这个账号吗？')) {
        return;
    }
    
    try {
        showStatus('🗑️ 正在删除账号...', 'info');
        
        const result = await ipcRenderer.invoke('xiaohongshu-delete-account-by-account-id', accountId);
        if (result.success) {
            showStatus('✅ 账号删除成功', 'success');
            await loadAccounts();
        } else {
            showStatus('❌ 删除账号失败: ' + result.error, 'error');
        }
    } catch (error) {
        console.error('删除账号失败:', error);
        showStatus('❌ 操作失败: ' + error.message, 'error');
    }
}

// ==================== 内容发布功能 ====================

// 发布内容
async function publishContent() {
    try {
        const accountId = document.getElementById('selectAccount').value;
        const title = document.getElementById('contentTitle').value.trim();
        const content = document.getElementById('contentDescription').value.trim();
        const tags = document.getElementById('contentTags').value.trim();
        const fileUrl = document.getElementById('fileUrl').value.trim();
        
        if (!accountId) {
            showStatus('❌ 请选择账号', 'error');
            return;
        }
        
        if (!title) {
            showStatus('❌ 请输入内容标题', 'error');
            return;
        }
        
        if (!content) {
            showStatus('❌ 请输入内容描述', 'error');
            return;
        }
        
        if (!fileUrl) {
            showStatus('❌ 请输入文件地址', 'error');
            return;
        }
        
        showStatus('🚀 正在开始自动发布...', 'info');
        
        // 先保存发布记录
        const recordData = {
            account_id: accountId,
            title: title,
            content: content,
            content_type: 'image',
            file_url: fileUrl,
            tags: tags,
            status: 'processing'
        };
        
        const recordResult = await ipcRenderer.invoke('xiaohongshu-save-publish-record', recordData);
        if (!recordResult.success) {
            showStatus('❌ 保存发布记录失败: ' + recordResult.error, 'error');
            return;
        }
        
        console.log('发布记录已保存:', recordResult.data);
        
        // 启动自动发布流程
        const publishData = {
            account_id: accountId,
            title: title,
            content: content,
            content_type: 'image',
            file_url: fileUrl,
            tags: tags,
            id: recordResult.data.id
        };
        
        const publishResult = await ipcRenderer.invoke('xiaohongshu-open-publish', publishData);
        if (publishResult.success) {
            showStatus('✅ 自动发布已启动！请在弹出的窗口中完成发布流程', 'success');
            console.log('自动发布启动成功:', publishResult.message);
            
            // 清空表单
            document.getElementById('contentTitle').value = '';
            document.getElementById('contentDescription').value = '';
            document.getElementById('contentTags').value = '';
            document.getElementById('fileUrl').value = '';
            
            // 刷新发布记录
            setTimeout(() => {
                loadRecords();
            }, 1000);
        } else {
            showStatus('❌ 启动自动发布失败: ' + publishResult.error, 'error');
        }
        
    } catch (error) {
        console.error('发布内容失败:', error);
        showStatus('❌ 操作失败: ' + error.message, 'error');
    }
}

// ==================== 发布记录功能 ====================

// 加载发布记录
async function loadRecords() {
    try {
        const result = await ipcRenderer.invoke('xiaohongshu-get-publish-records');
        if (result.success) {
            renderRecordsList(result.data);
            console.log('发布记录:', result.data);
        } else {
            console.error('加载发布记录失败:', result.error);
        }
    } catch (error) {
        console.error('加载发布记录失败:', error);
    }
}

// 渲染发布记录列表
function renderRecordsList(records) {
    const listElement = document.getElementById('recordsList');
    if (!listElement) return;
    
    if (records.length === 0) {
        listElement.innerHTML = '<p>暂无发布记录</p>';
        return;
    }
    
    const recordsHTML = records.map(record => `
        <div class="account-item">
            <div class="account-info">
                <div class="account-name">${record.title}</div>
                <div class="account-meta">
                    账号: ${record.account_name || '未知'} | 
                    类型: ${getContentTypeDisplayName(record.content_type)} | 
                    状态: ${getStatusDisplayName(record.status)} |
                    创建时间: ${formatDate(record.created_at)}
                </div>
            </div>
        </div>
    `).join('');
    
    listElement.innerHTML = recordsHTML;
}

// ==================== 工具函数 ====================

// 格式化日期
function formatDate(dateString) {
    if (!dateString) return '未知';
    try {
        const date = new Date(dateString);
        return date.toLocaleString('zh-CN');
    } catch (error) {
        return '未知';
    }
}

// 获取内容类型显示名称
function getContentTypeDisplayName(contentType) {
    const typeNames = {
        'image': '图文',
        'video': '视频'
    };
    return typeNames[contentType] || contentType;
}

// 获取状态显示名称
function getStatusDisplayName(status) {
    const statusNames = {
        'published': '已发布',
        'draft': '草稿',
        'processing': '处理中',
        'failed': '发布失败'
    };
    return statusNames[status] || status;
}

console.log('✅ 渲染进程脚本加载完成');
